[Data Science Tool Box] 4일차 실습

Author

김보람

Published

January 5, 2024

실습41: 포트정리 (lsof)

- lsof 프로그램 설치

apt-get install lsof
apt install lsof 

- 23052 포트를 사용하는 프로그램이 있는지 파악

lsof -i :23052

결과는 아래와 같은 예시로 나옴

COMMAND      PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
jupyter-l 862165 root    6u  IPv4 383551982      0t0  TCP *:23052 (LISTEN)
jupyter-l 862165 root   12u  IPv4 383671448      0t0  TCP 8c8831330c68:23052->210.117.173.181:59663 (ESTABLISHED)
jupyter-l 862165 root   16u  IPv4 383628690      0t0  TCP 8c8831330c68:23052->210.117.173.181:59664 (ESTABLISHED)
jupyter-l 862165 root   29u  IPv4 383612831      0t0  TCP 8c8831330c68:23052->210.117.173.181:59720 (ESTABLISHED)
jupyter-l 862165 root   34u  IPv4 383671463      0t0  TCP 8c8831330c68:23052->210.117.173.181:59667 (ESTABLISHED)

- 각자해볼것: ssh 접속시 사용하는 포트 제외하고 나머지 포트를 쓰고 있는 프로그램은 삭제

kill {PID}

위의 예시의 경우

kill 862165

- 주피터랩 평생켜놓기 + 끄기 (이거 자유자재로 할 수 있어야함)

- PID를 조회하는 다른방법

ps aux | grep jupyter

실습42: py310, co 환경에 주피터를 설치

- 아래를 설치

(py310) conda install -c conda-forge jupyterlab 
(py310) conda install -c conda-forge notebook 
(co) conda install -c conda-forge jupyterlab 
(co) conda install -c conda-forge notebook 

- 이래야 해당환경에서 주피터를 연결할 수 있음.

실습43: py310, co 환경에 주피터랩을 각각 띄우기

- 아래를 이용

(py310) jupyter lab --port 23052 
(co) jupyter lab --port 33052 

터미널 여러개 쓰는게 편할걸요?

- 참고로 위의 명령은 vi jupyter_notebook_config.py 에 대한 설정이 올바르게 끝난 상태에서 가능한 명령어임.

- 이제 23052 와 33052 는 각각 다른 파이썬 커널과 연결됨. 아래를 각각 실행해보자.

import pandas as pd
df = pd.DataFrame({'A':[2143,2143],'B':['-',3456]})
df.map(lambda x: 0 if x == '-' else x)

결과가 어떠한가? 왜 이런 결과가 나왔다고 생각하는가?

실습44: quarto preview

- 블로그를 미리보면서 편집하고 싶음.

- 1개의 포트에는 (py310)에 설치된 jupyterlab을 할당 + 1개의 포트에는 quarto preview를 할당

quarto preview --host "0.0.0.0" --port 43052

- 개인적소감: 반응이 살짝 느려서 별로임. (좋을때: 처음에는 좋음)

실습45: quarto preview test.qmd

- 파일하나만 찍어서 preview

quarto preview day4.qmd --host "0.0.0.0" --port 43052

- QMD파일은 RMD의 진화. (구 Rmarkdown)

  • MD –> RMD, QMD

- 마크다운 문법이 가능함. (MD의 기능)

  • 수식
  • 목록화

- 또한 R, Python, Julia 등의 코드를 삽입하여 실행할 수 있음. (RMD, QMD의 기능??)

```{python}
import matplotlib.pyplot as plt
a = [1,2,4]
a = a+[3] 
plt.plot(a)
```

- quarto.ipynb의 렌더링과 .qmd의 렌더링 모두 지원한다.

- 그런데 좀 이상하지 않아요??

깐적이 없는데 왜 될까? —-> .qmd파일은 txt파일이라 했지만.. {python}하는 순간 어떤 커널에 가서 저걸 보여준다.

가상환경에 따라서 .. 실행하는 커널의 파이썬을 붙이게 되어있다.

실습46: py310.qmd / co.qmd (hw)

- 해보기1: 아래와 같이 py310.qmd 파일을 만들고 (py310)에서 preview 해보기

py310.qmd
```{python}
import pandas as pd
df = pd.DataFrame({'A':[2143,2143],'B':['-',3456]})
df.map(lambda x: 0 if x == '-' else x)
```

- 해보기2: 아래와 같이 co.qmd 파일을 만들고 (co)에서 preview 해보기

co.qmd
```{python}
import pandas as pd
df = pd.DataFrame({'A':[2143,2143],'B':['-',3456]})
df.map(lambda x: 0 if x == '-' else x)
```

실습47: R+Python 사용가능한 개발환경 만들기

- 아래를 실행

conda create -n rpy 
conda activate rpy
conda install -c conda-forge r-essentials  # r이랑,, 필요한거 다 깔아준담
conda install -c conda-forge plotly
conda install -c conda-forge rpy2

- 여기에서 conda install -c conda-forge r-essentials로 인하여 R, Python, Jupyter 가 모두 최신버전으로 설치된다.

- 또한 R에는 이미 tidyverse, IRkernel 등의 패키지가 기본으로 깔려있다.: 원래 자동으로 깔리는 건 아닌뎅 .. r-essentials가 깔아주는듯

- R이 설치된 경로를 찾아보자.

- 수틀리면 이 R을 지우면 된다.

- R이 설치될 수 있는 3가지 시나리오

sudo apt-get install r-base # r 공식홈페이지, 수틀리면 리눅스 포맷  
(base) conda install -c conda-forge ... # 수틀리면 아나콘다 삭제해야함. 
(rpy) conda install -c conda-forge ... # 수틀리면 가상환경 삭제 

실습48: 포스트 업로드

- 해보기1: 적당한 ?.qmd 파일을 만들고 아래와 같은 포스트를 올려보자.

- 해보기2: 적당한 ?.ipynb 파일을 만들고 아래와 같은 포스트를 올려보자.

- 해보기3: 적당한 ?.qmd 파일을 만들고 아래와 같은 포스트를 올려보자.

실습49: 포스트 업로드 쉽게 하는 방법

- 스크립트 파일 만들어요..

upload
quarto render 
git add .
git commit -m .
git push 

실습50: 스크립트 파일의 위치?

- 아래파일을 어디에 두면 좋을까?

upload.sh
quarto render 
git add .
git commit -m .
git push 

- 저는 뭐 그냥.. 홈에두긴해요

실습51: 실행파일들의 위치

실습52: ls의 이름바꾸기 (실습추천X)

mv ls l2

  • ls를 ls2로 바꿔줘! 이름 바꾸는 효과

실습53: bash커널의 이해

- 예비학습: 파이썬 커널

- 예시1

a='askdfj;alskdjf;klajsdf'
a
$a
echo $a

- 예시2

a=('개' '고양이' '토끼')
echo $a 
echo ${a}
echo ${a[0]}
echo ${a[1]}
echo ${a[@]}

- 예시3

cmd_list=(ls "ls -a") 
${cmd_list}
${cmd_list[0]}
${cmd_list[1]}

- 걱정: 근데 그러면 내 리눅스에는 평생 a, cmd_list 라는 변수가 있는거야?

—– root의 bin.. 어딘가에..

실습54: PATH – 우분투에 저장된 영구변수

- 깨끗한 우분투에서

$PATH # 쳐보세요

- 아나콘다가 설치된 우분투에서

$PATH # 쳐보세요

실습54: 용어의 정리

- 폴더와 파일

  • 폴더: 끝에 /로 끝남. (근데 생략가능함)
  • 파일: 끝에 /로 끝나지 않음.

- 개념: 모든것은 파일과 폴더의 집합이다.

- 183번 컴퓨터로 가보자.

- 우분투컴퓨터에 guebin이라는 유저를 새롭게 추가했다 = /home/guebin/ 를 만듦

- 우분투에서 깃을 설치했다 = 우분투에서 sudo apt-get install git을 실행했다. = /usr/bin/git이라는 파일이 생겼다. = /usr/bin/git 생성

- ls는 우분투에 이미 내장되어있는 기능이다. = ls는 우분투에 이미 내장되어있는 명령파일이다. = 우분투를 설치하면 /usr/bin/ls라는 파일이 이미 있다.

- 우분투에 guebin이라는 유저를 등록했다. 이후에 guebin이라는 유저가 아나콘다를 설치했다. = 우분투에 guebin이라는 유저를 등록했다. 이후에 guebin이라는 유저는 아나콘다를 이용하여 가상의 (base)환경을 만들었다. = /home/guebin/anaconda3/폴더가 만들어졌다는 의미.

- 우분투에 guebin이라는 (슈퍼)유저를 등록했다. 이후에 guebin이라는 (슈퍼)유저가 루트권한을 이용하여 git을 설치했다. = /home/guebin/ 이 만들어짐 + /usr/bin/git 생성

실습55: 폴더의 레벨

- 183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.

  • root우분투
  • guebin우분투
  • guebin우분투-(base)
  • guebin우분투-(py310)

- 186번 컴퓨터에는 3개의 중첩된 컴퓨터(=폴더)가 존재한다.

  • root우분투
  • root우분투-(base)
  • root우분투-(py310)

- guebin이라는 윈도우유저가 anaconda (base)를 이용하는 경우 2개의 컴퓨터가 존재한다.

  • guebin윈도우
  • guebin윈도우-(base)

실습56: 난 어디에서 깃을 설치했어?

- 문제1: 183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.

  1. root우분투
  2. guebin우분투
  3. guebin우분투-(base)
  4. guebin우분투-(py310)

아래의 명령을 통하여 깃을 설치했다.

(base) sudo apt-get install git 

깃은 어디에 설치되어있는가? 1번 컴퓨터(sudo햇자너 )

- 문제2: 183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.

  1. root우분투
  2. guebin우분투
  3. guebin우분투-(base)
  4. guebin우분투-(py310)

아래와 같이 깃을 설치했다.

(py310) sudo apt-get install git 

깃은 어디에 설치되어있는가? 1번!

- 문제3: 183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.

  1. root우분투
  2. guebin우분투
  3. guebin우분투-(base)
  4. guebin우분투-(py310)

아래의 명령을 통하여 깃을 설치했다.

(py310) conda install -c conda-forge git 

깃은 어디에 설치되어있는가? 4번!

- 문제4: 183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.

  1. root우분투
  2. guebin우분투
  3. guebin우분투-(base)
  4. guebin우분투-(py310)

아래와 같이 깃을 설치했다.

(base) conda install -c conda-forge git

깃은 어디에 설치되어있는가? 3번 (이때는 base에 설치된 git이 다른환경에 영향을 주지 않음)

실습57: 난 어디에서 quarto를 설치했어?

- 문제1: 183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.

  1. root우분투
  2. guebin우분투
  3. guebin우분투-(base)
  4. guebin우분투-(py310)

아래의 명령을 통하여 quarto를 설치했다.

(base) wget https://github.com/quarto-dev/quarto-cli/releases/download/v1.4.533/quarto-1.4.533-linux-amd64.deb
(base) sudo dpkg -i quarto-1.4.533-linux-amd64.deb 

quarto는 어디에 설치되어있는가? 1번

- 문제2: 183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.

  1. root우분투
  2. guebin우분투
  3. guebin우분투-(base)
  4. guebin우분투-(py310)

아래의 명령을 통하여 quarto를 설치했다.

(base) wget https://github.com/quarto-dev/quarto-cli/releases/download/v1.4.533/quarto-1.4.533-linux-amd64.deb
(base) conda activate py310 
(py310) sudo dpkg -i quarto-1.4.533-linux-amd64.deb 

quarto는 어디에 설치되어있는가? 1번

- 문제3: 183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.

  1. root우분투
  2. guebin우분투
  3. guebin우분투-(base)
  4. guebin우분투-(py310)

아래의 명령을 통하여 quarto를 설치했다.

(py310) wget https://github.com/quarto-dev/quarto-cli/releases/download/v1.4.533/quarto-1.4.533-linux-amd64.deb
(py310) sudo dpkg -i quarto-1.4.533-linux-amd64.deb 

quarto는 어디에 설치되어있는가? 1번.. sudo!!!

- 문제4: 183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.

  1. root우분투
  2. guebin우분투
  3. guebin우분투-(base)
  4. guebin우분투-(py310)

아래의 명령을 통하여 quarto를 설치했다.

(py310) wget https://github.com/quarto-dev/quarto-cli/releases/download/v1.4.533/quarto-1.4.533-linux-amd64.deb
(py310) conda activate base 
(base) sudo dpkg -i quarto-1.4.533-linux-amd64.deb 

quarto는 어디에 설치되어있는가? 1번

실습58: 난 어디에서 upload.sh를 설치했어?

실습59: 여러가지 프로그램, 여러가지 설치방법

- 우분투자체의 프로그램

  • 우분투 자체의 프로그램 예시: git, quarto, python, R, anaconda, vi, ssh, wget, vscode
  • 우분투 자체의 프로그램은 다시 모든 유저가 영향을 받는 프로그램과 그렇지 않은 프로그램이 있음 : sudo(root권한)으로 까느냐 그냥 까느냐
  • 우분투 자체의 프로그램을 설치하는 방법들
sudo apt install git 
sudo apt-get install git 
sudo dpkg -i quarto-1.4.533-linux-amd64.deb 
bash Anaconda3-2019.03-Linux-x86_64.sh
sudo gdebi rstudio-server-1.2.5033-amd64.deb
# 기타 파일을 넣을 수 있는 모든 방법 (예를들면 압축파일 다운로드후 풀기) 

- 아나콘다(=base)에 종속된 프로그램

  • 아나콘다내에 종속된 프로그램의 예시: conda, python, R, jupyter
  • 아나콘다에 종속된 프로그램은 anaconda3 폴더안에 있음.

- 아나콘다환경(=py310)에 종속시킬 수 “있는” 프로그램

  • 아나콘다내에 종속된 프로그램의 예시: python, R, jupyter
  • 아나콘다환경에 종속된 프로그램은 anaconda3/envs/py310 와 같은 형식의 폴더안에 있음.

- 파이썬에 종속된 프로그램 (=파이썬패키지=파이썬라이브러리=파이썬모듈)

  • 파이썬에 종속된 프로그램 예시: numpy, pandas
  • 얘네들이 어디에 깔리는지는 그때그때 다름
  • 지우는 방법도 그때그때 다르겠지? (젤 편하고 깔끔하게 지우려면?)

- R에 종속된 프로그램 (=R패키지=R라이브러리)

  • R에 종속된 프로그램의 예시: tidyverse
  • 얘들이 어디 깔리는지도 그때그때 다름
  • 지우는 방법도 그때그때 다르겠지? (젤 편하고 깔끔하게 지우려면?)

- 질문1: pip install vs conda install

  • 설치되는 레벨의 차이
  • 설치에서 느껴지는 편안함의 차이
  • 삭제할때 느껴지는 불편함의 차이
  • pip install pandas는 사실 install.packages("tidyverse")에 대응되는 것임

pip install이 더 작은 느낌.. R이나 Python에서 사용하는 패키지들을 설치하는 작은 느낌이고.. conda는 R이나 Python등을 설치 할 수 있엉

- 질문2: 언제 pip install을 쓰고 언제 conda install을 써야할까? 답은없어요. 저는 대충 아래와 같이 합니다. (해보고 수틀리면 그냥 환경날리세여)

  • 만만한 패키지는 pip install 로 설치: numpy, pandas
  • 까다로운 패키지는 conda install 로 설치: torch, autogluon

실습60: (base)에서 (rpy)에 있는 R 실행

- 원래는 불가능한 일이겠죠?

- 억지로 가능하게 하려면?

실습61: (rpy)에서 EPT라는 R패키지 설치하고 위치파악하기

- R을 실행

conda activate rpy
R

- 또다른 터미널을 열고 아래의 폴더로 이동 + 패키지확인

cd ~/anaconda3/envs/rpy/lib/R/library
ls

- EPT패키지 설치

install.packages("EPT")

- ~/anaconda3/envs/rpy/lib/R/library에서 확인

실습62: (rpy)에 설치된 R과 주피터 연결하기

- R을 실행

IRkernel::installspec()

- 주피터 실행

  • 주피터랩에 R이 실행된다!

실습63: 대시보드, 프리젠테이션 베끼기

- ref: https://guebin.github.io/DV2023/posts/14wk-1.html

- 대시보드

- 프리젠테이션